์ธ๊ธฐ ์๋ฐ์คํฌ๋ฆฝํธ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Redux์ MobX์ ์ํคํ ์ฒ ํจํด, ์ฑ๋ฅ, ์ฌ์ฉ ์ฌ๋ก, ํ์ฅ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ข ํฉ์ ์ผ๋ก ๋น๊ตํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ํ ๊ด๋ฆฌ: Redux ๋ MobX
ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ๊ฒฌ๊ณ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ์ํ ๊ด๋ฆฌ ๋ถ์ผ์ ๋ ๊ฐ์ง ์ฃผ์ ์ฃผ์๋ Redux์ MobX์ ๋๋ค. ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์์ด ๋๋ ทํ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํ๋ฉฐ, ๊ฐ๊ฐ ์ฅ๋จ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด ๊ธ์์๋ Redux์ MobX์ ์ํคํ ์ฒ ํจํด, ํต์ฌ ๊ฐ๋ , ์ฑ๋ฅ ํน์ฑ ๋ฐ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํ๊ตฌํ์ฌ ๋ค์ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ๋ฅผ ์ํ ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์๋๋ก ์ข ํฉ์ ์ธ ๋น๊ต๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ํ ๊ด๋ฆฌ์ ์ดํด
Redux์ MobX์ ์ธ๋ถ ์ฌํญ์ ์ดํด๋ณด๊ธฐ ์ ์ ์ํ ๊ด๋ฆฌ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ณธ์ง์ ์ผ๋ก ์ํ ๊ด๋ฆฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ UI์ ๋์์ ๊ตฌ๋ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ดํ๊ณ ๊ตฌ์ฑํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ ๊ด๋ฆฌ๋ ์ํ๋ ๋ ์์ธก ๊ฐ๋ฅํ๊ณ ๋๋ฒ๊น ํ๊ธฐ ์ฌ์ฐ๋ฉฐ ์ ์ง๋ณด์ํ๊ธฐ ์ข์ ์ฝ๋๋ฒ ์ด์ค๋ก ์ด์ด์ง๋๋ค.
์ํ ๊ด๋ฆฌ๊ฐ ์ค์ํ ์ด์
- ๋ณต์ก์ฑ ๊ฐ์: ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ท๋ชจ์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ํ ๊ด๋ฆฌ๋ ์ ์ ๋ ์ด๋ ค์์ง๋๋ค. ์ ์ ํ ์ํ ๊ด๋ฆฌ ๊ธฐ์ ์ ์ํ๋ฅผ ์์ธก ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก ์ค์ ์ง์คํํ๊ณ ๊ตฌ์ฑํ์ฌ ๋ณต์ก์ฑ์ ์ค์ด๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์ ์ง๋ณด์์ฑ ํฅ์: ์ ๊ตฌ์กฐํ๋ ์ํ ๊ด๋ฆฌ ์์คํ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ก์ง์ ์ดํดํ๊ณ , ์์ ํ๊ณ , ๋๋ฒ๊น ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ์ฑ๋ฅ ํฅ์: ํจ์จ์ ์ธ ์ํ ๊ด๋ฆฌ๋ ๋ ๋๋ง์ ์ต์ ํํ๊ณ ๋ถํ์ํ ์ ๋ฐ์ดํธ๋ฅผ ์ค์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ํ ์คํธ ์ฉ์ด์ฑ: ์ค์ ์ง์ค์ ์ํ ๊ด๋ฆฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋์๊ณผ ์ํธ ์์ฉํ๊ณ ๊ฒ์ฆํ ์ ์๋ ๋ช ํํ๊ณ ์ผ๊ด๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ฌ ๋จ์ ํ ์คํธ๋ฅผ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
Redux: ์์ธก ๊ฐ๋ฅํ ์ํ ์ปจํ ์ด๋
Flux ์ํคํ ์ฒ์์ ์๊ฐ์ ๋ฐ์ Redux๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ์ ์ํ ์์ธก ๊ฐ๋ฅํ ์ํ ์ปจํ ์ด๋์ ๋๋ค. ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ๊ณผ ๋ถ๋ณ์ฑ์ ๊ฐ์กฐํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ์ถ๋ก ํ๊ณ ๋๋ฒ๊น ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
Redux์ ํต์ฌ ๊ฐ๋
- ์คํ ์ด(Store): ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ๋ณด์ ํ๋ ์ค์ ์ ์ฅ์์ ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ดํฐ์ ๋จ์ผ ์ง์ค ๊ณต๊ธ์(single source of truth)์ ๋๋ค.
- ์ก์ (Actions): ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ ์๋๋ฅผ ์ค๋ช ํ๋ ์์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด์ ๋๋ค. ์ํ ์ ๋ฐ์ดํธ๋ฅผ ์ ๋ฐํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋๋ค. ์ก์ ์ ์ผ๋ฐ์ ์ผ๋ก `type` ์์ฑ์ ๊ฐ์ง๋ฉฐ ์ถ๊ฐ ๋ฐ์ดํฐ(ํ์ด๋ก๋)๋ฅผ ํฌํจํ ์ ์์ต๋๋ค.
- ๋ฆฌ๋์(Reducers): ์ก์ ์ ๋ํ ์๋ต์ผ๋ก ์ํ๊ฐ ์ด๋ป๊ฒ ์ ๋ฐ์ดํธ๋์ด์ผ ํ๋์ง๋ฅผ ๋ช ์ํ๋ ์์ ํจ์์ ๋๋ค. ์ด์ ์ํ์ ์ก์ ์ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ์๋ก์ด ์ํ๋ฅผ ๋ฐํํฉ๋๋ค.
- ๋์คํจ์น(Dispatch): ์คํ ์ด์ ์ก์ ์ ๋ณด๋ด ์ํ ์ ๋ฐ์ดํธ ํ๋ก์ธ์ค๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ํจ์์ ๋๋ค.
- ๋ฏธ๋ค์จ์ด(Middleware): ์ก์ ์ด ๋ฆฌ๋์์ ๋๋ฌํ๊ธฐ ์ ์ ๊ฐ๋ก์ฑ๋ ํจ์๋ก, ๋ก๊น , ๋น๋๊ธฐ API ํธ์ถ ๋๋ ์ก์ ์์ ๊ณผ ๊ฐ์ ์ฌ์ด๋ ์ดํํธ๋ฅผ ์ํํ ์ ์๊ฒ ํฉ๋๋ค.
Redux ์ํคํ ์ฒ
Redux ์ํคํ ์ฒ๋ ์๊ฒฉํ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ฐ๋ฆ ๋๋ค:
- UI๊ฐ ์คํ ์ด์ ์ก์ ์ ๋์คํจ์นํฉ๋๋ค.
- ๋ฏธ๋ค์จ์ด๊ฐ ์ก์ ์ ๊ฐ๋ก์ฑ๋๋ค (์ ํ ์ฌํญ).
- ๋ฆฌ๋์๋ ์ก์ ๊ณผ ์ด์ ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด ์ํ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
- ์คํ ์ด๋ ์์ ์ ์ํ๋ฅผ ์๋ก์ด ์ํ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
- UI๋ ์ ๋ฐ์ดํธ๋ ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ ๋ ๋๋ง๋ฉ๋๋ค.
์์ : Redux๋ก ๊ฐ๋จํ ์นด์ดํฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ง๋ค๊ธฐ
๊ฐ๋จํ ์นด์ดํฐ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก Redux์ ๊ธฐ๋ณธ ์๋ฆฌ๋ฅผ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค.
1. ์ก์ ์ ์ํ๊ธฐ:
const INCREMENT = 'INCREMENT';
const DECREMENT = 'DECREMENT';
function increment() {
return {
type: INCREMENT
};
}
function decrement() {
return {
type: DECREMENT
};
}
2. ๋ฆฌ๋์ ์์ฑํ๊ธฐ:
const initialState = {
count: 0
};
function counterReducer(state = initialState, action) {
switch (action.type) {
case INCREMENT:
return {
...state,
count: state.count + 1
};
case DECREMENT:
return {
...state,
count: state.count - 1
};
default:
return state;
}
}
3. ์คํ ์ด ์์ฑํ๊ธฐ:
import { createStore } from 'redux';
const store = createStore(counterReducer);
4. ์ก์ ๋์คํจ์น ๋ฐ ์ํ ๋ณํ ๊ตฌ๋ ํ๊ธฐ:
store.subscribe(() => {
console.log('ํ์ฌ ์ํ:', store.getState());
});
store.dispatch(increment()); // ์ถ๋ ฅ: ํ์ฌ ์ํ: { count: 1 }
store.dispatch(decrement()); // ์ถ๋ ฅ: ํ์ฌ ์ํ: { count: 0 }
Redux์ ์ฅ์
- ์์ธก ๊ฐ๋ฅ์ฑ: ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ๊ณผ ๋ถ๋ณ์ฑ์ Redux๋ฅผ ๋งค์ฐ ์์ธก ๊ฐ๋ฅํ๊ณ ๋๋ฒ๊น ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ์ค์ ์ง์ค์ ์ํ: ๋จ์ผ ์คํ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ดํฐ์ ์ค์ ์ง์ค ๊ณต๊ธ์์ ์ ๊ณตํฉ๋๋ค.
- ๋๋ฒ๊น ๋๊ตฌ: Redux DevTools๋ ์๊ฐ ์ฌํ ๋๋ฒ๊น ๋ฐ ์ก์ ๋ฆฌํ๋ ์ด๋ฅผ ํฌํจํ ๊ฐ๋ ฅํ ๋๋ฒ๊น ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๋ฏธ๋ค์จ์ด: ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ด๋ ์ดํํธ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋์คํจ์น ํ๋ก์ธ์ค์ ์ฌ์ฉ์ ์ง์ ๋ก์ง์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
- ๊ฑฐ๋ํ ์ํ๊ณ: Redux๋ ํฌ๊ณ ํ๋ฐํ ์ปค๋ฎค๋ํฐ๋ฅผ ๋ณด์ ํ๊ณ ์์ด ํ๋ถํ ๋ฆฌ์์ค, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์ง์์ ์ ๊ณตํฉ๋๋ค.
Redux์ ๋จ์
- ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋: Redux๋ ํนํ ๊ฐ๋จํ ์์ ์ ์ํด ์๋นํ ์์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๋ฅผ ์๊ตฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
- ๊ฐํ๋ฅธ ํ์ต ๊ณก์ : Redux์ ๊ฐ๋ ๊ณผ ์ํคํ ์ฒ๋ฅผ ์ดํดํ๋ ๊ฒ์ ์ด๋ณด์์๊ฒ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
- ๋ถ๋ณ์ฑ ์ค๋ฒํค๋: ๋ถ๋ณ์ฑ์ ๊ฐ์ ํ๋ ๊ฒ์ ํนํ ํฌ๊ณ ๋ณต์กํ ์ํ ๊ฐ์ฒด์ ๊ฒฝ์ฐ ์ฑ๋ฅ ์ค๋ฒํค๋๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค.
MobX: ๊ฐ๋จํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ํ ๊ด๋ฆฌ
MobX๋ ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ฑํํ ๊ฐ๋จํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๊ธฐ๋ณธ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ ์ข ์์ฑ์ ์๋์ผ๋ก ์ถ์ ํ๊ณ UI๋ฅผ ํจ์จ์ ์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค. MobX๋ Redux์ ๋นํด ๋ ์ง๊ด์ ์ด๊ณ ์ฅํฉํ์ง ์์ ์ํ ๊ด๋ฆฌ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
MobX์ ํต์ฌ ๊ฐ๋
- ๊ด์ฐฐ ๋์(Observables): ๋ณ๊ฒฝ ์ฌํญ์ ๊ด์ฐฐํ ์ ์๋ ๋ฐ์ดํฐ์ ๋๋ค. ๊ด์ฐฐ ๋์์ด ๋ณ๊ฒฝ๋๋ฉด MobX๋ ์ด์ ์์กดํ๋ ๋ชจ๋ ๊ด์ฐฐ์(์ปดํฌ๋ํธ ๋๋ ๋ค๋ฅธ ๊ณ์ฐ๋ ๊ฐ)์๊ฒ ์๋์ผ๋ก ์๋ฆฝ๋๋ค.
- ์ก์ (Actions): ์ํ๋ฅผ ์์ ํ๋ ํจ์์ ๋๋ค. MobX๋ ์ก์ ์ด ํธ๋์ญ์ ๋ด์์ ์คํ๋๋๋ก ๋ณด์ฅํ์ฌ ์ฌ๋ฌ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ๋จ์ผ์ ํจ์จ์ ์ธ ์ ๋ฐ์ดํธ๋ก ๊ทธ๋ฃนํํฉ๋๋ค.
- ๊ณ์ฐ๋ ๊ฐ(Computed Values): ์ํ์์ ํ์๋๋ ๊ฐ์ ๋๋ค. MobX๋ ์ข ์์ฑ์ด ๋ณ๊ฒฝ๋ ๋ ๊ณ์ฐ๋ ๊ฐ์ ์๋์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
- ๋ฐ์(Reactions): ํน์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ ์คํ๋๋ ํจ์์ ๋๋ค. ๋ฐ์์ ์ผ๋ฐ์ ์ผ๋ก UI ์ ๋ฐ์ดํธ๋ API ํธ์ถ๊ณผ ๊ฐ์ ์ฌ์ด๋ ์ดํํธ๋ฅผ ์ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
MobX ์ํคํ ์ฒ
MobX ์ํคํ ์ฒ๋ ๋ฐ์์ฑ ๊ฐ๋ ์ ์ค์ฌ์ผ๋ก ์ ๊ฐ๋ฉ๋๋ค. ๊ด์ฐฐ ๋์์ด ๋ณ๊ฒฝ๋๋ฉด MobX๋ ์ด์ ์์กดํ๋ ๋ชจ๋ ๊ด์ฐฐ์์๊ฒ ๋ณ๊ฒฝ ์ฌํญ์ ์๋์ผ๋ก ์ ํํ์ฌ UI๊ฐ ํญ์ ์ต์ ์ํ๋ฅผ ์ ์งํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์ปดํฌ๋ํธ๋ ๊ด์ฐฐ ๊ฐ๋ฅํ ์ํ๋ฅผ ๊ด์ฐฐํฉ๋๋ค.
- ์ก์ ์ ๊ด์ฐฐ ๊ฐ๋ฅํ ์ํ๋ฅผ ์์ ํฉ๋๋ค.
- MobX๋ ๊ด์ฐฐ ๋์๊ณผ ๊ด์ฐฐ์ ๊ฐ์ ์ข ์์ฑ์ ์๋์ผ๋ก ์ถ์ ํฉ๋๋ค.
- ๊ด์ฐฐ ๋์์ด ๋ณ๊ฒฝ๋๋ฉด MobX๋ ์ด์ ์์กดํ๋ ๋ชจ๋ ๊ด์ฐฐ์(๊ณ์ฐ๋ ๊ฐ ๋ฐ ๋ฐ์)๋ฅผ ์๋์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
- UI๋ ์ ๋ฐ์ดํธ๋ ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ ๋ ๋๋ง๋ฉ๋๋ค.
์์ : MobX๋ก ๊ฐ๋จํ ์นด์ดํฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ง๋ค๊ธฐ
MobX๋ฅผ ์ฌ์ฉํ์ฌ ์นด์ดํฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค.
import { makeObservable, observable, action, computed } from 'mobx';
import { observer } from 'mobx-react';
class CounterStore {
count = 0;
constructor() {
makeObservable(this, {
count: observable,
increment: action,
decrement: action,
doubleCount: computed
});
}
increment() {
this.count++;
}
decrement() {
this.count--;
}
get doubleCount() {
return this.count * 2;
}
}
const counterStore = new CounterStore();
const CounterComponent = observer(() => (
์นด์ดํธ: {counterStore.count}
๋ ๋ฐฐ ์นด์ดํธ: {counterStore.doubleCount}
));
MobX์ ์ฅ์
- ๋จ์์ฑ: MobX๋ Redux์ ๋นํด ๋ ์ง๊ด์ ์ด๊ณ ์ฅํฉํ์ง ์์ ์ํ ๊ด๋ฆฌ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค.
- ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ: MobX๋ ์ข ์์ฑ์ ์๋์ผ๋ก ์ถ์ ํ๊ณ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ UI๋ฅผ ํจ์จ์ ์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ ์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋: MobX๋ Redux๋ณด๋ค ์ ์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๋ฅผ ํ์๋ก ํ์ฌ ์์ํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค.
- ์ฑ๋ฅ: MobX์ ๋ฐ์ํ ์์คํ ์ ์ฑ๋ฅ์ด ๋ฐ์ด๋ ๋ถํ์ํ ์ฌ๋ ๋๋ง์ ์ต์ํํฉ๋๋ค.
- ์ ์ฐ์ฑ: MobX๋ Redux๋ณด๋ค ์ ์ฐํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์ ๊ฐ์ฅ ์ ํฉํ ๋ฐฉ์์ผ๋ก ์ํ๋ฅผ ๊ตฌ์กฐํํ ์ ์์ต๋๋ค.
MobX์ ๋จ์
- ๋ฎ์ ์์ธก ๊ฐ๋ฅ์ฑ: MobX์ ๋ฐ์์ ํน์ฑ์ผ๋ก ์ธํด ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ํ ๋ณ๊ฒฝ์ ์ถ๋ก ํ๊ธฐ๊ฐ ๋ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
- ๋๋ฒ๊น ์ ์ด๋ ค์: MobX ์ ํ๋ฆฌ์ผ์ด์ ๋๋ฒ๊น ์ ํนํ ๋ณต์กํ ๋ฐ์ ์ฒด์ธ์ ๋ค๋ฃฐ ๋ Redux ์ ํ๋ฆฌ์ผ์ด์ ๋ณด๋ค ๋ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
- ์์ ์ํ๊ณ: MobX๋ Redux๋ณด๋ค ์ํ๊ณ๊ฐ ์์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฆฌ์์ค๊ฐ ์ ์ต๋๋ค.
- ๊ณผ๋ํ ๋ฐ์์ฑ ๊ฐ๋ฅ์ฑ: ๋ถํ์ํ ์ ๋ฐ์ดํธ๋ฅผ ์ ๋ฐํ๋ ์ง๋์น๊ฒ ๋ฐ์์ ์ธ ์์คํ ์ ๋ง๋ค์ด ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค. ์ ์คํ ์ค๊ณ์ ์ต์ ํ๊ฐ ํ์ํฉ๋๋ค.
Redux ๋ MobX: ์์ธ ๋น๊ต
์ด์ ๋ช ๊ฐ์ง ์ฃผ์ ์ธก๋ฉด์์ Redux์ MobX๋ฅผ ๋ ์์ธํ ๋น๊ตํด ๋ณด๊ฒ ์ต๋๋ค:
1. ์ํคํ ์ฒ ํจํด
- Redux: ๋ถ๋ณ์ฑ๊ณผ ์์ธก ๊ฐ๋ฅ์ฑ์ ๊ฐ์กฐํ๋ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ์ถ Flux ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- MobX: ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ ์ข ์์ฑ์ ์๋์ผ๋ก ์ถ์ ํ๊ณ UI๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ฑํํฉ๋๋ค.
2. ์ํ ๋ถ๋ณ์ฑ(Mutability)
- Redux: ๋ถ๋ณ์ฑ์ ๊ฐ์ ํฉ๋๋ค. ์ํ ์ ๋ฐ์ดํธ๋ ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ์์ ํ๋ ๋์ ์๋ก์ด ์ํ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์ํ๋ฉ๋๋ค. ์ด๋ ์์ธก ๊ฐ๋ฅ์ฑ์ ๋์ด๊ณ ๋๋ฒ๊น ์ ๋จ์ํํฉ๋๋ค.
- MobX: ๊ฐ๋ณ ์ํ๋ฅผ ํ์ฉํฉ๋๋ค. ๊ด์ฐฐ ๊ฐ๋ฅํ ์์ฑ์ ์ง์ ์์ ํ ์ ์์ผ๋ฉฐ, MobX๋ ๋ณ๊ฒฝ ์ฌํญ์ ์๋์ผ๋ก ์ถ์ ํ์ฌ UI๋ฅผ ๊ทธ์ ๋ง๊ฒ ์ ๋ฐ์ดํธํฉ๋๋ค.
3. ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋
- Redux: ์ผ๋ฐ์ ์ผ๋ก ํนํ ๊ฐ๋จํ ์์ ์ ๋ํด ๋ ๋ง์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๊ฐ ํ์ํฉ๋๋ค. ์ก์ , ๋ฆฌ๋์, ๋์คํจ์น ํจ์๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค.
- MobX: ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๊ฐ ๋ ํ์ํฉ๋๋ค. ๊ด์ฐฐ ๊ฐ๋ฅํ ์์ฑ๊ณผ ์ก์ ์ ์ง์ ์ ์ํ๋ฉด ๋๋จธ์ง๋ MobX๊ฐ ์ฒ๋ฆฌํฉ๋๋ค.
4. ํ์ต ๊ณก์
- Redux: ํนํ ์ด๋ณด์์๊ฒ๋ ํ์ต ๊ณก์ ์ด ๋ ๊ฐํ๋ฆ ๋๋ค. ์ก์ , ๋ฆฌ๋์, ๋ฏธ๋ค์จ์ด์ ๊ฐ์ Redux ๊ฐ๋ ์ ์ดํดํ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
- MobX: ํ์ต ๊ณก์ ์ด ๋ ์๋งํฉ๋๋ค. ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ผ๋ฐ์ ์ผ๋ก ํ์ ํ๊ธฐ๊ฐ ๋ ์ฝ๊ณ , ๊ฐ๋จํ API ๋๋ถ์ ์์ํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค.
5. ์ฑ๋ฅ
- Redux: ๋ถ๋ณ์ฑ ์ค๋ฒํค๋๋ก ์ธํด ํนํ ํฐ ์ํ ๊ฐ์ฒด์ ๋น๋ฒํ ์ ๋ฐ์ดํธ๊ฐ ์๋ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฉ๋ชจ์ด์ ์ด์ ๋ฐ ์ ๋ ํฐ์ ๊ฐ์ ๊ธฐ์ ์ด ์ฑ๋ฅ ์ต์ ํ์ ๋์์ด ๋ ์ ์์ต๋๋ค.
- MobX: ๋ถํ์ํ ์ฌ๋ ๋๋ง์ ์ต์ํํ๋ ๋ฐ์ํ ์์คํ ๋๋ถ์ ์ผ๋ฐ์ ์ผ๋ก ์ฑ๋ฅ์ด ๋ ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ ์ง๋์น๊ฒ ๋ฐ์์ ์ธ ์์คํ ์ ๋ง๋ค์ง ์๋๋ก ์ฃผ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
6. ๋๋ฒ๊น
- Redux: Redux DevTools๋ ์๊ฐ ์ฌํ ๋๋ฒ๊น ๋ฐ ์ก์ ๋ฆฌํ๋ ์ด๋ฅผ ํฌํจํ ํ๋ฅญํ ๋๋ฒ๊น ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- MobX: ํนํ ๋ณต์กํ ๋ฐ์ ์ฒด์ธ์์๋ ๋๋ฒ๊น ์ด ๋ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ MobX DevTools๋ ๋ฐ์ ๊ทธ๋ํ๋ฅผ ์๊ฐํํ๊ณ ์ํ ๋ณ๊ฒฝ์ ์ถ์ ํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
7. ์ํ๊ณ
- Redux: ๋ ํฌ๊ณ ์ฑ์ํ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๋ฐฉ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋๊ตฌ, ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- MobX: ๋ ์์ง๋ง ์ฑ์ฅํ๋ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ์ง๋ง ํต์ฌ MobX ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ์ ์ง ๊ด๋ฆฌ๋๊ณ ๊ธฐ๋ฅ์ด ํ๋ถํฉ๋๋ค.
8. ์ฌ์ฉ ์ฌ๋ก
- Redux: ์์ธก ๊ฐ๋ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ๊ฐ์ฅ ์ค์ํ ๋ณต์กํ ์ํ ๊ด๋ฆฌ ์๊ตฌ ์ฌํญ์ด ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํฉ๋๋ค. ์๋ก๋ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ , ๋ณต์กํ ๋ฐ์ดํฐ ๋์๋ณด๋, ์๋นํ ๋น๋๊ธฐ ๋ก์ง์ด ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ์ด ์์ต๋๋ค.
- MobX: ๋จ์์ฑ, ์ฑ๋ฅ, ์ฌ์ฉ ํธ์์ฑ์ด ์ฐ์ ์๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํฉ๋๋ค. ์๋ก๋ ๋ํํ ๋์๋ณด๋, ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ , UI ์ ๋ฐ์ดํธ๊ฐ ์ฆ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ์ด ์์ต๋๋ค.
9. ์์ ์๋๋ฆฌ์ค
- Redux:
- ์๋ง์ ์ ํ ํํฐ, ์ฅ๋ฐ๊ตฌ๋ ๊ด๋ฆฌ, ์ฃผ๋ฌธ ์ฒ๋ฆฌ๊ฐ ์๋ ๋ณต์กํ ์ ์ ์๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์ .
- ์ค์๊ฐ ์์ฅ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ์ ๋ณต์กํ ์ํ ๊ณ์ฐ์ด ์๋ ๊ธ์ต ๊ฑฐ๋ ํ๋ซํผ.
- ๋ณต์กํ ์ฝํ ์ธ ํธ์ง ๋ฐ ์ํฌํ๋ก ๊ด๋ฆฌ ๊ธฐ๋ฅ์ด ์๋ ์ฝํ ์ธ ๊ด๋ฆฌ ์์คํ (CMS).
- MobX:
- ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ๋ฌธ์๋ฅผ ํธ์งํ ์ ์๋ ์ค์๊ฐ ํ์ ํธ์ง ์ ํ๋ฆฌ์ผ์ด์ .
- ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฐ๋ผ ์ฐจํธ์ ๊ทธ๋ํ๋ฅผ ๋์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ๋ํํ ๋ฐ์ดํฐ ์๊ฐํ ๋์๋ณด๋.
- ์ฆ์ UI ์ ๋ฐ์ดํธ์ ๋ณต์กํ ๊ฒ์ ๋ก์ง์ด ์๋ ๊ฒ์.
์ฌ๋ฐ๋ฅธ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ํํ๊ธฐ
Redux์ MobX ์ฌ์ด์ ์ ํ์ ํ๋ก์ ํธ์ ํน์ ์๊ตฌ ์ฌํญ, ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๊ธฐ์ ๋ณต์ก์ฑ, ๊ทธ๋ฆฌ๊ณ ํ์ ์ ํธ๋์ ์ ๋ฌธ ์ง์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ Redux๋ฅผ ๊ณ ๋ คํ์ธ์:
- ๋งค์ฐ ์์ธก ๊ฐ๋ฅํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด ์ํ ๊ด๋ฆฌ ์์คํ ์ด ํ์ํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณต์กํ ์ํ ๊ด๋ฆฌ ์๊ตฌ ์ฌํญ์ด ์์ต๋๋ค.
- ๋ถ๋ณ์ฑ๊ณผ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ์ค์ํ๊ฒ ์๊ฐํฉ๋๋ค.
- ํฌ๊ณ ์ฑ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋๊ตฌ ์ํ๊ณ์ ์ ๊ทผํด์ผ ํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ MobX๋ฅผ ๊ณ ๋ คํ์ธ์:
- ๋จ์์ฑ, ์ฑ๋ฅ, ์ฌ์ฉ ํธ์์ฑ์ ์ฐ์ ์ํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ฒํ UI ์ ๋ฐ์ดํธ๊ฐ ํ์ํฉ๋๋ค.
- ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ ํธํฉ๋๋ค.
- ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๋ฅผ ์ต์ํํ๊ณ ์ถ์ต๋๋ค.
์ฃผ์ ํ๋ ์์ํฌ์์ ํตํฉ
Redux์ MobX๋ ๋ชจ๋ React, Angular, Vue.js์ ๊ฐ์ ์ธ๊ธฐ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ ์ํํ๊ฒ ํตํฉ๋ ์ ์์ต๋๋ค. `react-redux` ๋ฐ `mobx-react`์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ปดํฌ๋ํธ๋ฅผ ์ํ ๊ด๋ฆฌ ์์คํ ์ ์ฐ๊ฒฐํ๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
React ํตํฉ
- Redux: `react-redux`๋ React ์ปดํฌ๋ํธ๋ฅผ Redux ์คํ ์ด์ ์ฐ๊ฒฐํ๊ธฐ ์ํด `Provider`์ `connect` ํจ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
- MobX: `mobx-react`๋ ๊ด์ฐฐ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ ์ปดํฌ๋ํธ๋ฅผ ์๋์ผ๋ก ๋ค์ ๋ ๋๋งํ๊ธฐ ์ํด `observer` ๊ณ ์ฐจ ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
Angular ํตํฉ
- Redux: `ngrx`๋ Angular ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ธ๊ธฐ ์๋ Redux ๊ตฌํ์ผ๋ก, ์ก์ , ๋ฆฌ๋์, ์ ๋ ํฐ์ ๊ฐ์ ์ ์ฌํ ๊ฐ๋ ์ ์ ๊ณตํฉ๋๋ค.
- MobX: `mobx-angular`๋ฅผ ์ฌ์ฉํ๋ฉด Angular์ ํจ๊ป MobX๋ฅผ ์ฌ์ฉํ์ฌ ํจ์จ์ ์ธ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํด ๋ฐ์ํ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์์ต๋๋ค.
Vue.js ํตํฉ
- Redux: `vuex`๋ Vue.js์ ๊ณต์ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, Redux์์ ์๊ฐ์ ๋ฐ์์ง๋ง Vue์ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ์ ๋ง๊ฒ ์กฐ์ ๋์์ต๋๋ค.
- MobX: `mobx-vue`๋ MobX๋ฅผ Vue.js์ ํตํฉํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ฌ Vue ์ปดํฌ๋ํธ ๋ด์์ MobX์ ๋ฐ์ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ํฉ๋๋ค.
๋ชจ๋ฒ ์ฌ๋ก
Redux๋ MobX ์ค ์ด๋ ๊ฒ์ ์ ํํ๋ , ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ์ง๋ณด์ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํด์๋ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
Redux ๋ชจ๋ฒ ์ฌ๋ก
- ๋ฆฌ๋์๋ฅผ ์์ํ๊ฒ ์ ์งํ๊ธฐ: ๋ฆฌ๋์๊ฐ ์์ ํจ์์ธ์ง ํ์ธํ์ธ์. ์ฆ, ๋์ผํ ์ ๋ ฅ์ ๋ํด ํญ์ ๋์ผํ ์ถ๋ ฅ์ ๋ฐํํด์ผ ํ๋ฉฐ ๋ถ์์ฉ์ด ์์ด์ผ ํฉ๋๋ค.
- ์ ๋ ํฐ ์ฌ์ฉํ๊ธฐ: ์คํ ์ด์์ ๋ฐ์ดํฐ๋ฅผ ํ์์ํค๊ธฐ ์ํด ์ ๋ ํฐ๋ฅผ ์ฌ์ฉํ์ธ์. ์ด๋ ๋ถํ์ํ ์ฌ๋ ๋๋ง์ ๋ฐฉ์งํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์ํ ์ ๊ทํํ๊ธฐ: ๋ฐ์ดํฐ ์ค๋ณต์ ํผํ๊ณ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ํฅ์์ํค๊ธฐ ์ํด ์ํ๋ฅผ ์ ๊ทํํ์ธ์.
- ๋ถ๋ณ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ฌ์ฉํ๊ธฐ: Immutable.js๋ Immer์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ๋ถ๋ณ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ๋จ์ํํ์ธ์.
- ๋ฆฌ๋์์ ์ก์ ํ ์คํธํ๊ธฐ: ๋ฆฌ๋์์ ์ก์ ์ด ์์๋๋ก ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ์ธ์.
MobX ๋ชจ๋ฒ ์ฌ๋ก
- ์ํ ๋ณ๊ฒฝ์ ์ก์ ์ฌ์ฉํ๊ธฐ: MobX๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ํจ์จ์ ์ผ๋ก ์ถ์ ํ ์ ์๋๋ก ํญ์ ์ก์ ๋ด์์ ์ํ๋ฅผ ์์ ํ์ธ์.
- ๊ณผ๋ํ ๋ฐ์์ฑ ํผํ๊ธฐ: ๋ถํ์ํ ์ ๋ฐ์ดํธ๋ฅผ ์ ๋ฐํ๋ ์ง๋์น๊ฒ ๋ฐ์์ ์ธ ์์คํ ์ ๋ง๋ค์ง ์๋๋ก ์ฃผ์ํ์ธ์. ๊ณ์ฐ๋ ๊ฐ๊ณผ ๋ฐ์์ ์ ์คํ๊ฒ ์ฌ์ฉํ์ธ์.
- ํธ๋์ญ์ ์ฌ์ฉํ๊ธฐ: ์ฌ๋ฌ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ํธ๋์ญ์ ์ผ๋ก ๋ฌถ์ด ๋จ์ผ์ ํจ์จ์ ์ธ ์ ๋ฐ์ดํธ๋ก ๊ทธ๋ฃนํํ์ธ์.
- ๊ณ์ฐ๋ ๊ฐ ์ต์ ํํ๊ธฐ: ๊ณ์ฐ๋ ๊ฐ์ด ํจ์จ์ ์ธ์ง ํ์ธํ๊ณ ๊ทธ ์์์ ๋น์ฉ์ด ๋ง์ด ๋๋ ๊ณ์ฐ์ ์ํํ์ง ์๋๋ก ํ์ธ์.
- ์ฑ๋ฅ ๋ชจ๋ํฐ๋งํ๊ธฐ: MobX DevTools๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ๋ชจ๋ํฐ๋งํ๊ณ ์ ์ฌ์ ์ธ ๋ณ๋ชฉ ํ์์ ์๋ณํ์ธ์.
๊ฒฐ๋ก
Redux์ MobX๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ๋๋ ทํ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํ๋ ๊ฐ๋ ฅํ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. Redux๋ Flux ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ก ์์ธก ๊ฐ๋ฅ์ฑ๊ณผ ๋ถ๋ณ์ฑ์ ๊ฐ์กฐํ๋ ๋ฐ๋ฉด, MobX๋ ๋ฐ์์ฑ๊ณผ ๋จ์์ฑ์ ์ฑํํฉ๋๋ค. ๋ ์ฌ์ด์ ์ ํ์ ํ๋ก์ ํธ์ ํน์ ์๊ตฌ ์ฌํญ, ํ์ ์ ํธ๋, ๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ณธ ๊ฐ๋ ์ ๋ํ ์น์๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํต์ฌ ์๋ฆฌ, ์ฅ์ , ๋จ์ ์ ์ดํดํจ์ผ๋ก์จ ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ณ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ์ง๋ณด์ ๊ฐ๋ฅํ๋ฉฐ ์ฑ๋ฅ์ด ๋ฐ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. Redux์ MobX๋ฅผ ๋ชจ๋ ์คํํ์ฌ ๊ทธ๋ค์ ๊ธฐ๋ฅ์ ๋ํ ๋ ๊น์ ์ดํด๋ฅผ ์ป๊ณ ์ด๋ ๊ฒ์ด ์์ ์ ํ์์ ๊ฐ์ฅ ์ ํฉํ์ง ๊ฒฐ์ ํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์. ํ๋ก์ ํธ์ ์ฅ๊ธฐ์ ์ธ ์ฑ๊ณต์ ๋ณด์ฅํ๊ธฐ ์ํด ํญ์ ๊นจ๋ํ ์ฝ๋, ์ ์ ์๋ ์ํคํ ์ฒ, ๊ทธ๋ฆฌ๊ณ ์ฒ ์ ํ ํ ์คํธ๋ฅผ ์ฐ์ ์ํด์ผ ํ๋ค๋ ๊ฒ์ ๊ธฐ์ตํ์ธ์.